home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / cross / fast05.lha / Example / proj.asm < prev    next >
Assembly Source File  |  1997-02-17  |  26KB  |  905 lines

  1. *********************************************************
  2. *                            *
  3. *                Clock Example                *
  4. *                            *
  5. *********************************************************
  6. *********************************************************
  7. *                            *
  8. * Author         John Salmon                *
  9. * Revision       0.2                    *
  10. * Date           Oct 1996                *
  11. * Copyright     Hot Chips                *
  12. *                            *
  13. *********************************************************
  14.  
  15. *********************************************************
  16. *                            *
  17. * note:   !^ is a clock dependent variable        *
  18. *         !% is a temp test code location        *
  19. *         !# is a buffer size variable            *
  20. *         !- C4 C8 C9 processor                *
  21. *         !@ not yet implemented            *
  22. *                            *
  23. *********************************************************
  24.  
  25. *********************************************************
  26. *                            *
  27. *               VARIABLE DECLARATIONS                   * 
  28. *                            *
  29. * Note: Page 0 variables declared thus -  Variable    *
  30. *       Constants declared thus        -  CONSTANT    *
  31. *       Bit Fields declared thus       -  FieldBIT    *
  32. *                            *
  33. *********************************************************
  34.  
  35. *********************************************************
  36. *                On Chip Registers            *
  37. *********************************************************
  38.  
  39. * Hardware Ports
  40. PtAData        $00    ; Port A
  41. PtBData        $01    ; Port B
  42. PtCData        $02    ; Port C
  43. PtDData        $03    ; Port D
  44.  
  45. PtADir        $04    ; Port A data dir
  46. PtBDir        $05    ; Port A data dir
  47. PtCDir        $06    ; Port C data dir C9 chips only
  48. PtDDir        $07    ; Port D data dir C9 chips only
  49.  
  50. Spcr        $0A    ; Control Reg
  51. SpiSPR0        $0A.0    ;  clock rate 0
  52. SpiSPR1        $0A.1    ;  clock rate 1
  53. SpiCPHA        $0A.2    ;  clock phase
  54. SpiCPOL        $0A.3    ;  clock polarity
  55. SpiMSTR        $0A.4    ;  master mode
  56. SpiSPE        $0A.6    ;  SPI enable
  57. SpiSPIE        $0A.7    ;  interupt enable
  58. Spsr        $0B    ;
  59. SpiMODF        $0B.4    ; mode fault
  60. SpiWCOL        $0B.6    ; write collision
  61. SpiSPIF        $0B.7    ; transfer complete
  62. Spdr        $0C    ;
  63.  
  64. * Serial Communications Interface
  65. Baud        $0D    ; baud rate
  66. Sccr1        $0E    ; control reg 1
  67. ScR8        $0E.7    ;   recieve data bit 8
  68. ScT8        $0E.6    ;   transmit data bit 8
  69. ScWLEN        $0E.4    ;   word length
  70. ScWAKE        $0E.3    ;   wake up select
  71. Sccr2        $0F    ; control reg 2
  72. ScTIE        $0F.7    ;   transmit interupt enable
  73. ScTCIE        $0F.6    ;   transmit complete interupt enable
  74. ScRIE        $0F.5    ;   reciever interupt enable
  75. ScILIE        $0F.4    ;   idle line interupt enable
  76. ScTE        $0F.3    ;   transmitter enable
  77. ScRE        $0F.2    ;   reciever enable
  78. ScRWU        $0F.1    ;   reciever wake up
  79. ScSBK        $0F.0    ;   send break
  80.  
  81. Scsr        $10    ; status register
  82. ScTDRE        $10.7    ;   transmit data reg empty
  83. ScTC        $10.6    ;   transmit complete
  84. ScRDRF        $10.5    ;   reciever data reg full
  85. ScIDLE        $10.4    ;   idle line detect
  86. ScOR        $10.3    ;   overrun
  87. ScNF        $10.2    ;   noise
  88. ScFE        $10.1    ;   framing error
  89.  
  90. Scdr        $11    ; data register 
  91.  
  92. * Timer System
  93. Tcr        $12    ; control
  94. TcrOLVL        $12.0    ;  output level
  95. TcrIEDG        $12.1    ;  input edge
  96. TcrTOIE        $12.5    ;  timer overflow interupt enable
  97. TcrOCIE        $12.6    ;  output compare interupt enable
  98. TcrICIE        $12.7    ;  input capture interupt enable
  99. Tsr        $13    ; status
  100. TsrTOF        $13.5    ;  timer overflow flag
  101. TsrOCF        $13.6    ;  output compare flag
  102. TsrICF        $13.7    ;  input capture flag
  103. Icrh        $14    ; input capture hi
  104. Icrl        $15    ; input capture lo
  105. Ocrh        $16    ; output compare hi
  106. Ocrl        $17    ; output compare lo
  107. Trh        $18    ; timer register hi
  108. Trl        $19    ; timer register lo
  109. Atrh        $1A    ; alternate timer register hi
  110. Atrl        $1B    ; alternate timer register lo
  111.  
  112. * Computer Operating Properly -C8
  113. Coprst        $1D    ;
  114. Copcr        $1E    ;
  115. CopCOPE        $1E.2    ;
  116. CopCME        $1E.3    ;
  117. CopCOPF        $1E.4    ;
  118.  
  119. * Extra Registers
  120. RegA        $50    ; temporary register - non interupt
  121. RegB        $51    ; temporary register 2 - non interupt
  122. IntRegA        $52    ; temporary register - interupts
  123. IntRegB        $53    ; temporary register - interupts
  124.  
  125. * Real Time Debugger
  126.  
  127. COM_RD        #$FB    ; read memory
  128. COM_WR        #$FC    ; write memory
  129. COM_STP        #$FA    ; stop
  130. RPLY_OK        #$AA    ; ok reply
  131. RPLY_HS        #$F0    ; handshake
  132. OP_RTS        #$81    ; RTS opcode
  133. OP_LDA        #$D6    ; LDA $####,X opcode
  134. OP_STA        #$D7    ; STA $####,X opcode
  135.  
  136. DbgOpc        $54    ; opcode  --
  137. DbgAdHi        $55    ; address   | dont move
  138. DbgAdLo        $56    ;           | fixed @ $0054
  139. DbgRts        $57    ; return  --
  140. DbgCtx        $58    ; context switch
  141. DbgSz        $59    ; size
  142. DbgIdx        $5A    ; index
  143.  
  144. *********************************************************
  145. *           Default IO Port Configuration               *
  146. *********************************************************
  147.  
  148. PTADEF        #$00            ; port A XXXX 0000
  149. PTADIR        #$CF            ;        OOII OOOO
  150.  
  151. PTBDEF        #$00            ; port B XXXX XXXX
  152. PTBDIR        #$C0            ;        OOII IIII
  153.  
  154. PTCDEF        #$80            ; port C 1XXX XXXX
  155. PTCDIR        #$FF            ;        OOOO OOOO
  156.  
  157. PTDDEF        #$00            ; port D XXXX XXXX
  158. PTDDIR        #$00            ;        IIII IIII
  159.  
  160. *********************************************************
  161. *           Control Module Variables                    *
  162. *********************************************************
  163.  
  164. * Timer
  165. TmrCnt        $5B    ; timer event counter
  166. TmrLstH        $5C    ; last time hi for timer reload
  167. TmrLstL        $5D    ; last time lo
  168.  
  169. *********************************************************
  170. *           Clock Module Variables                      *
  171. *********************************************************
  172.  
  173. ClkInc        $74    ; interupt bump
  174. ClkTik        $75    ; tick    0..49 ( 1/50th sec)
  175. ClkSec        $76    ; seconds 0..59
  176. ClkMin        $77    ; minutes 0..59
  177. ClkHrs        $78    ; hours   0..24
  178. ClkDay        $79    ; day     1..31
  179. ClkMth        $7A    ; month   1..12
  180.  
  181. ClkFlgs        $7B    ; clock control flags
  182. ClkSEC        $7B.0    ;   second update
  183. ClkMIN        $7B.1    ;   minute update
  184.  
  185. *********************************************************
  186. *                  EXAMPLE CONTROL MODULE               *
  187. *********************************************************
  188.  
  189.         ORG $0100        ;!- C4 ROM starts here 
  190. *        ORG $0160        ;!- C8 ROM starts here 
  191.  
  192.         "COPYRIGHT YOU"
  193.  
  194. *********************************************************
  195. *                UNUSED VECTORS             *
  196. *********************************************************
  197.  
  198. irq_int
  199. swi_int
  200. spi_int        RTI            ; unused vectors
  201.  
  202. *********************************************************
  203. *                   RESET ENTRY             *
  204. *********************************************************
  205.  
  206. reset        SEI            ; mask interupts
  207.  
  208.         LDA #$00        ; set options register
  209.         STA $1FDF        ;!- C4 C8
  210.  
  211. ctrl_rst                ; reset command entry
  212.         SEI            ;
  213.         RSP            ; reset stack pointer
  214.  
  215. *********************************************************
  216. *                Configure IO Ports            *
  217. *********************************************************
  218.  
  219.         LDA PTADEF        ; config port A
  220.         STA PtAData        ;
  221.         LDA PTADIR        ;
  222.         STA PtADir        ;
  223.  
  224.         LDA PTBDEF        ; config port B
  225.         STA PtBData        ;
  226.         LDA PTBDIR        ;
  227.         STA PtBDir        ;
  228.  
  229.         LDA PTCDEF        ; config port C
  230.         STA PtCData        ;
  231.         LDA PTCDIR        ;
  232.         STA PtCDir        ;
  233.  
  234. *********************************************************
  235. *                Open Software Modules            *
  236. *********************************************************
  237.  
  238.         JSR clk_open        ; open clock
  239.         JSR tmr_open        ; open timer system
  240.         JSR dbg_open        ; open debug port
  241.  
  242. *********************************************************
  243. *                Main Service Loop                *
  244. *********************************************************
  245.  
  246.         CLI            ; enable interupts
  247. main_loop                ; forever
  248.  
  249. *********************************************************
  250. *               Functions Called Continiously        *
  251. *********************************************************
  252.  
  253.         JSR clk_upd        ;   update clock
  254.  
  255. *********************************************************
  256. *               Functions Called Every Second        *
  257. *********************************************************
  258.  
  259. ml_sec        BBC ClkSEC ml_min    ; if new second
  260.         CMB ClkSEC        ;   clr sec flag
  261.  
  262. *********************************************************
  263. *               Functions Called Every Minute        *
  264. *********************************************************
  265.  
  266. ml_min        BBC ClkMIN ml_dog    ; if new minute
  267.         CMB ClkMIN        ;   clr min flag
  268.  
  269. *********************************************************
  270. *               Watch Dog Functions             *
  271. *********************************************************
  272.  
  273. ml_dog        BBC TsrTOF ml_loop    ; if rollover flag
  274.         LDA Trl            ;   clr rollover flag
  275.  
  276.  
  277. ml_loop        BRA main_loop        ; loop
  278.  
  279. *********************************************************
  280. * SUB        Enable 1000 hz Timer Interupt              *
  281. *********************************************************
  282. **********************************************